[英]How to click on the list when it said the list has no attribute "click"
from selenium import webdriver
import time
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import random
driver = webdriver.Chrome('ChromeDriver')
driver.get("https://devbusiness.tunai.io/login")
time.sleep(2)
driver.maximize_window()
#log in credentials
username = driver.find_element(By.NAME, "loginUsername");
username.send_keys("dayon@tunai");
password = driver.find_element(By.NAME, "loginPassword");
password.send_keys("12341234");
login = driver.find_element(By.XPATH,"//*[@id='app']/div/div/div/div/div/div[2]/form/div[4]/button");
login.submit();
time.sleep(3)
driver.get("https://devbusiness.tunai.io/dashboard/my_salon_user")
time.sleep(3)
randomUsername = random.choice(["dayon.salon3@tunai","dayonmanager@tunai"])
driver.find_element(By.XPATH, "//tbody[@role='rowgroup']/tr[@role='row']/td/a[text()='"+ randomUsername +"']").click()
print("Username selected: ", randomUsername)
time.sleep(5)
driver.find_element(By.XPATH,"//*[@id='page-content']/div/div[3]/div/div[2]/div/div/div[2]/div/div[1]/header/a").click()
time.sleep(5)
driver.find_element(By.XPATH,"//*[@id='accAddPermission']/div/div[1]/form/div[1]/div/button").click()
time.sleep(5)
randomList = random.choice(["MY SALON > Member","SALON REPORT > [ALL]","SALON MENU > [ALL]","OUTLET SETTING > [ALL]","MY SALON > User > [ALL]","MY SALON > User > Permission > [ALL]","MY SALON > User > Delete User","MY SALON > User > Outlet Permission > [ALL]","MY SALON > User > Outlet Permission > Update Outlet Permission","MY SALON > User > Add User","OUTLET SETTING > Outlets > [ALL]"])
element = driver.find_elements(By.CLASS_NAME,"custom-control custom-switch mt-2 mb-2")
for element in randomList:
element.click()
time.sleep(3)
print("List selected: ", randomList)
driver.find_element(By.XPATH,"//*[@id='accKey']")
time.sleep(3)
driver.close()
當它想點擊所選列表並返回 AttributeError: 'str' object has no attribute 'click' 時,代碼出現錯誤。 我使用 driver.find_elements 因為要搜索列表但由於“元素”而無法單擊。 還有什么其他可能的解決方案?
問題是您從列表中隨機選擇了一個選項,但沒有正確使用它。 用法random.choice(element)
不正確。
您可以使用以下代碼作為您所面臨問題的參考。 這里//tbody[@role='rowgroup']/tr[@role='row']/td[2]/a
是包含所有用戶名字段(加上一些其他元素)的表格單元格的 xpath
randomUsername = random.choice(["dayon@tunai","dayon.salon3@tunai","dayonmanager@tunai"])
driver.find_element(By.XPATH, "//tbody[@role='rowgroup']/tr[@role='row']/td/a[text()='"+randonUsername+"']").click()
在第一行中,這將首先從您的列表中創建一個具有隨機值的變量。 然后它將通過 xpath 中的隨機選項為表格單元格傳遞變量並單擊它。 將打開一個帶有“阻止的權限”的新對話框
要單擊table
列出的特定username
,您需要使用唯一的xpath
才能單擊。
登錄后添加此代碼。
driver.get("https://devbusiness.tunai.io/dashboard/my_salon_user")
time.sleep(3)
randomtext = random.choice(["dayon@tunai","dayon.salon3@tunai","dayonmanager@tunai"])
element = driver.find_element(By.XPATH,"//table[@id='__BVID__74']/tbody//tr//td[2]//a[text()='{}']".format(randomtext))
element.click()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.