调查中的问题是:您一周中的哪几天一直有空?我想检查星期天。
我正在复制从在线视频中看到的代码,但是,我收到此错误。有人建议弹出窗口可能会阻止程序正常运行,但我看不到弹出窗口。
我尝试使用chromedriver和geckodriver。两者都存在错误。
查看是否选择了星期日的代码可以正常工作:
status=driver.find_element_by_id("RESULT_CheckBox-8_0").is_selected()
print(status)
输出:
False
这是我的代码:
from selenium import webdriver
driver=webdriver.Chrome(executable_path="my_webdriver_path"\\chromedriver.exe
driver.get("https://fs2.formsite.com/meherpavan/form2/index.html?1537702596407")
您一周中的哪几天一直有空?
我现在要选中“星期日”框。这是我的代码:
status=driver.find_element_by_id("RESULT_CheckBox-8_0").click()
print(status)
我希望选中“星期日”框,但收到此错误:
selenium.common.exceptions.ElementClickInterceptedException: Message: Element <input id="RESULT_CheckBox-8_0" class="multiple_choice" name="RESULT_CheckBox-8" type="checkbox"> is not clickable at point (313,599) because another element <label> obscures it
我看不到另一个使程序模糊的元素。有没有人有什么建议?我是编码新手,所以将不胜感激。
答案 0 :(得分:2)
您遇到的问题与 label 和 input 标记中用于不同属性的相同值有关。
即使您使用的是“ find_element_by_id”,您也可以看到标签的“ for”属性的值与“ id”属性的值相同(不一定总是唯一的值)。
要解决此问题,您可以使用其他定位器,例如XPATH。您可以通过右键单击元素(在使用f12检查代码时)来获得xpath,然后选择[copy]-[xpath]
这是一些应该起作用的代码(注意:我将chromedriver.exe放置在与其自身的.py文件相同的位置):
chat_message
不要忘记最终关闭驱动程序,否则它将在运行过程中停留在后台。
您可以通过以下方式实现:
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://fs2.formsite.com/meherpavan/form2/index.html?1537702596407')
status = driver.find_element_by_id("RESULT_CheckBox-8_0").is_selected()
if status:
pass
else:
driver.find_element_by_xpath("//*[@id='q15']/table/tbody/tr/td[1]/label").click()
希望这会有所帮助!
答案 1 :(得分:2)
尝试使用ActionChains
单击元素。
element = driver.find_element_by_id("RESULT_CheckBox-8_0")
ActionChains(driver).move_to_element(element).click(element).perform()
status = driver.find_element_by_id("RESULT_CheckBox-8_0").is_selected()
print(status)
正在导入:
from selenium.webdriver import ActionChains
答案 2 :(得分:2)
要在复选框上click()
(文本为 Sunday ),您可以使用以下Locator Strategy:
使用XPATH
:
driver.get("https://fs2.formsite.com/meherpavan/form2/index.html?1537702596407")
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//label[starts-with(@for, 'RESULT_CheckBox-') and contains(., 'Sunday')]"))).click()
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
浏览器快照: