我正在尝试设置一个可以帮助我更轻松地工作的自动化。我想自动登录设备并设置一些初始设置。我遇到的问题是我必须选中一个复选框才能继续,但是我找不到找到该按钮的方法。
这是该按钮的XPath:
//*[@id="tableHdd"]/div/div[1]/span[1]/input
broswer.find_element_by_class_name('table-cell').find_elements_by_class_name('checkbox').click()
答案 0 :(得分:0)
find_element_*
应该返回一个唯一的WebElement。如果定位符匹配> 1个元素-将返回第一个匹配项。 find_elements_*
-返回WebElements的List,您不能从列表中调用click()
函数因此,如果页面上只有一个复选框-您可以将其选中:
import re, glob, os
os.chdir("C:\\Somepath")
for filename in glob.glob("**/*.mp3", recursive = True):
filename = re.match(r"(?P<filename>\w+).*\.(?P<ext>.+)", filename)
filename = "{}.{}".format(filename.group('filename'), filename.group('ext'))
print(filename)
如果还有更多复选框,并且需要特别打勾,请使用经过稍微修改的XPath expression:
driver.find_element_by_class_name("checkbox").click()
答案 1 :(得分:0)
要在复选框上clcick()
,您必须为element_to_be_clickable()
引入 WebDriverWait ,并且您可以使用Locator Strategies中的任何一个:
使用CSS_SELECTOR
:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "div#tableHdd > div.table > div.table-header > span.table-cell > input.checkbox"))).click()
使用XPATH
:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//div[@id='tableHdd']/div[@class='table']/div[@class='table-header']/span[@class='table-cell']/input[@class='checkbox']"))).click()
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC