我正在尝试使用Selenium选中该复选框。这是复选框的元素。
<div class="ams-item-text ng-binding" ng-bind-html="amssh.create_label(item)" ng-click="toggle_check_node(item)" role="button" tabindex="0">all contract signed</div>
我直接复制此元素的x路径并编写了以下代码:
browser.find_element_by_xpath('//*[@id="advancedcontents"]/div/div/div[2]/div/div[1]/div[1]/div/div/div[2]/div[2]/div/div[2]/div[3]/div[2]').click()
但是它永远不会单击我想要的复选框,而是单击下面的复选框,即与此相关:
<div class="ams-item-text ng-binding" ng-bind-html="amssh.create_label(item)" ng-click="toggle_check_node(item)" role="button" tabindex="0">future</div>
可能是什么问题?我尝试使用复选框元素或文本元素(也可单击),但两者均无法正常工作。
答案 0 :(得分:1)
尝试以下代码:
wait = WebDriverWait(browser, 20)
wait.until(EC.element_to_be_clickable(By.XPATH, "//div[contains(.,'all contract signed')]")).click()
注意:将以下导入项添加到您的解决方案中
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
答案 1 :(得分:1)
要点击动态元素,请诱导WebDriverWait
()和visibility_of_element_located
()并遵循xpath
选项。
WebDriverWait(browser,10).until(EC.visibility_of_element_located((By.XPATH,"//div[@class='ams-item-text ng-binding' and text()='all contract signed']"))).click()
您需要导入以下库。
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
答案 2 :(得分:-1)
“ ams-item-text ng-binding” browser.find_element_by_xpath('// * [@ id =“ advancedcontents”] / div / div / div [2] / div / div [1] / div [1] / div / div / div [2] / div [2] / div / div [2] / div [3] / div [2]')。click()