2017-07-04 172 views
2

我想请点击如下图所示名为“段Metrix的2.0消费对象档案报告”蟒蛇硒无法点击标签

enter image description here

此按钮,我发现相应的HTML,如下图所示。

enter image description here

我试着写了如下代码:

elem = driver.find_elements_by_xpath("//*[contains(text(), 'Segment Metrix 2.0 Consumer Target Profile report ')]") 
print (elem) 

它给了我:

[<selenium.webdriver.remote.webelement.WebElement (session="daf65f4e5ed0485027d04eed8db8aca7", element="0.8079987809618281-1")>] 

但我不能点击它加入elem[0].click(),它抛出我“元素不可见”错误。我该怎么办?

回答

0

尽量等到元素变得可见:

from selenium.webdriver.support import expected_conditions as EC 
from selenium.webdriver.common.by import By 
from selenium.webdriver.support.ui import WebDriverWait as wait 

wait(driver, 10).until(EC.visibility_of_element_located((By.LINK_TEXT, "Segment Metrix 2.0 Consumer Target Profile report"))).click() 
+0

谢谢您的回答!我尝试过,但我得到了一个timeoutexception:'selenium.common.exceptions.TimeoutException:消息:' –

+0

您点击“Segment Metrix 2.0 Consumer Target Profile report”之前是否点击了“Segment dec”? – Andersson

+0

你是对的!我没有点击segment dec。只需点击它,它的作品! Thx;) –

0

您可以等待元素可见

from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC 

elem = driver.find_elements_by_xpath("//*[contains(text(), 'Segment Metrix 2.0 Consumer Target Profile report ')]") 
WebDriverWait(driver, 10).until(EC.visibility_of(elem[0])) 
elem[0].click() 
0

的问题是该元素具有可见。这意味着即使它在html中也是不够的,它必须在浏览器中可见。尝试先点击下拉列表以查看其元素,而不是单击其中一个元素。另外,点击下拉列表后,不要忘记等到你的元素被显式或隐式地看到。

您确定需要点击它吗?如果它只是一个带有网址的对象,请确切链接并使用driver.get(url)

+0

非常好的解释!我点击下拉列表,它的作品!谢谢。是的,我必须点击它,因为URL始终保持不变。 –