2017-09-27 41 views
0

我想通过xpath找到按钮元素,当我在chrome中键入它时发现该按钮元素,但该脚本给了我无属性id错误。我尝试切换到iframe和框架,我用webdriver.wait等待按钮元素显示,并没有这些工作。我还想循环点击第一个按钮,如果它显示“Follow”,然后移动到下一个按钮,如果它显示“Follow”。脚本在Chrome上运行,我试图在instagram上执行此操作Html hereXpath存在于chrome中,但不存在于我的脚本中。没有这样的元素:无法找到元素:

popup = browser.find_element_by_xpath('//button[@class="_qv64e _gexxb _4tgw8 _njrw0"]') 

ActionChains(browser)\ 
.move_to_element(popup).click()\ 
.perform() 

File "/Users/trevaroneill/PycharmProjects/Insta/instafollow.py", line 91, in <module> popup = browser.find_element_by_xpath('//button[@class="_qv64e _gexxb _4tgw8 _njrw0"]')

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//button[@class="_qv64e _gexxb _4tgw8 _njrw0"]"} 
+0

请分享网址 – iamsankalp89

+0

你看到的错误是正常的,因为名单没有名为id – iamsankalp89

+0

你可以给一些HTML属性码?脚本也运行在chrome上呢? – yong

回答

0

你得到在列表中所需的元素。

变化 popup = browser.find_elements_by_xpath('//button[@class="_qv64e _gexxb _4tgw8 _njrw0"]')

popup = browser.find_element_by_xpath('//button[@class="_qv64e _gexxb _4tgw8 _njrw0"]')

find_element而不是find_elements

+0

不起作用stil,我得到的错误:selenium.common.exceptions.NoSuchElementException:消息:没有这样的元素:无法找到元素:{“method”:“xpath”,“selector”:“// button [@ class =“_qv64e _gexxb _4tgw8 _njrw0”]“}(会话信息:chrome = 61.0.3163.100) – Trevar

+0

然后xpath出现问题。 确保在执行代码时使用类别为“_qv64e _gexxb _4tgw8 _njrw0”的按钮(使用任何调试器)。 此外,您可以在“控制台”选项卡中的任何浏览器的检查模式下测试xpath。输入控制台输入'document.getElementsByClassName()' –

1

由于您使用find_element 小号,你应该写宁:

ActionChains(browser)\ 
.move_to_element(popup[0]).click()\ 
.perform() 

,以访问由find_elements返回列表中的第一个元素。

问题是如果你有几个webelements被你的xpath选中,在这种情况下,它不确定第一个是你实际瞄准的那个webelements。我会建议你使用find_element如果没有特别的原因,你正在使用find_elements

+0

不工作stil,我得到错误:selenium.common.exceptions.NoSuchElementException:消息:没有这样的元素:无法找到元素:{“method”:“xpath “,”selector“:”//按钮[@class =“_qv64e _gexxb _4tgw8 _njrw0”]“} (会话信息:chrome = 61.0.3163.100) – Trevar

+0

我的猜测在这种情况下,是一个不正确的xpath,几种可能性: 1)_qv64e _gexxb _4tgw8 _njrw0看起来像一个动态生成的类名。确保它在调试测试时仍然存在,正如@YoavGaudin所建议的那样。 2)尝试重新表达xpath。使用与class属性不同的somme,或按钮节点。 3)当您尝试访问元素时,是否已完全下载DOM?如果不是,隐含的等待可能会有所帮助。 最好的办法是将html源代码或链接指向正在测试的页面。 –

相关问题