Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 覆盖空格和元素so的Div看起来不可读取(Python Selenium)_Javascript_Python_Html_Python 3.x_Selenium - Fatal编程技术网

Javascript 覆盖空格和元素so的Div看起来不可读取(Python Selenium)

Javascript 覆盖空格和元素so的Div看起来不可读取(Python Selenium),javascript,python,html,python-3.x,selenium,Javascript,Python,Html,Python 3.x,Selenium,请帮帮我,因为这快把我逼疯了 这应该是简单的-单击一个元素。但就我的一生而言,我找不到一个方法来做这件事 我可以用我尝试过的每个方法找到它,但我似乎无法单击它。我试过按类名,按XPath类,按XPath跨度文本,我试过用javascript强制点击。没有什么。这个蓝色的OK按钮看起来不可点击 我开始认为这可能是因为div的形状,我将在一张图片中附加它。看起来div也在按钮的左边,所以可能只是单击按钮旁边的空白区域,也恰好被div覆盖(无论出于何种原因)?如果是,有没有办法指定单击div的哪个部分

请帮帮我,因为这快把我逼疯了

这应该是简单的-单击一个元素。但就我的一生而言,我找不到一个方法来做这件事

我可以用我尝试过的每个方法找到它,但我似乎无法单击它。我试过按类名,按XPath类,按XPath跨度文本,我试过用javascript强制点击。没有什么。这个蓝色的OK按钮看起来不可点击

我开始认为这可能是因为div的形状,我将在一张图片中附加它。看起来div也在按钮的左边,所以可能只是单击按钮旁边的空白区域,也恰好被div覆盖(无论出于何种原因)?如果是,有没有办法指定单击div的哪个部分

以下是我尝试过的:

browser.find_element_by_class_name('ok')

browser.find_element(By.XPATH, "//div[@class='ok']")

browser.execute_script("arguments[0].click();",
                                  WebDriverWait(browser, 10).until(EC.element_to_be_clickable
                                                                   ((By.Class, "ok"))))

browser.FindElement(By.XPath("//div[@class='ok']/span[@class='OK']"));

您需要以
标记的文本为目标:

xpath = "//div[@class='ok']/span[contains(., 'OK')]";

browser.find_element_by_xpath(xpath);
我得到的元素仍然是不可交互的错误

您需要“等待”该元素可单击。浏览器和Selenium之间的竞争条件可能会导致元素在您能够单击它之前就在DOM中,例如,如果您有一个使对象淡入淡出的动画

xpath = "//div[@class='ok']/span[contains(., 'OK')]";
wait = WebDriverWait(browser, 10);
okButton = wait.until(EC.element_to_be_clickable(xpath));

okButton.click();

您需要以
标记的文本为目标:

xpath = "//div[@class='ok']/span[contains(., 'OK')]";

browser.find_element_by_xpath(xpath);
我得到的元素仍然是不可交互的错误

您需要“等待”该元素可单击。浏览器和Selenium之间的竞争条件可能会导致元素在您能够单击它之前就在DOM中,例如,如果您有一个使对象淡入淡出的动画

xpath = "//div[@class='ok']/span[contains(., 'OK')]";
wait = WebDriverWait(browser, 10);
okButton = wait.until(EC.element_to_be_clickable(xpath));

okButton.click();

您使用的xpath是什么?您能分享您用xpath“//span[.='OK']”尝试过的tracehave吗?请分享你迄今为止所做的尝试?这是否回答了你的问题?Apologies,我将用我尝试过的方法编辑问题try://*[@class='ok']/[contains(text(),'ok')]您使用的xpath是什么?您能分享您用xpath“//span[.='OK']”尝试过的tracehave吗?请分享你迄今为止所做的尝试?这是否回答了你的问题?A博客,我将用我尝试过的内容编辑这个问题://*[@class='ok']/[contains(text(),'ok')]]@bboooyintheuk:我更新了我的答案。您需要使用WebDriverWait对象等待元素可单击后再单击它。嘿,必须稍微调整代码,但我得到
TypeError:find_element()参数在*之后必须是iterable,而不是WebElement
?我的代码:
xpath=browser.find_element_by_xpath(//div[@class='ok']]/span[contains(,'ok')]);wait=WebDriverWait(浏览器,10);okButton=wait.until(EC.element可点击(xpath));OK按钮。单击()谢谢。我修正了我的问题。我写的Python不多。@bboooyintheuk:我更新了我的答案。您需要使用WebDriverWait对象等待元素可单击后再单击它。嘿,必须稍微调整代码,但我得到
TypeError:find_element()参数在*之后必须是iterable,而不是WebElement
?我的代码:
xpath=browser.find_element_by_xpath(//div[@class='ok']]/span[contains(,'ok')]);wait=WebDriverWait(浏览器,10);okButton=wait.until(EC.element可点击(xpath));OK按钮。单击()谢谢。我修正了我的问题。我不怎么写Python。