我正在尝试为 friend 制作一个 DeviantART Llamabot 作为我使用 Python 3 的第一个 Selenium 元素。除了能够找到“给 llama”按钮之外,我的机器人 99% 都在工作。
问题似乎是按钮出现在下面的菜单是一个弹出窗口,我不能在 Firefox 中右键单击并选择“复制 css 选择器”。一旦我检查了给定菜单的元素,菜单就会关闭并且 html 会发生变化。
我设法截取了代码的随机示例页面的屏幕截图,这样我什至可以看到那里有什么。我尝试自己从头开始学习 CSS 选择器的工作原理,并且设法找到了除列表中的实际元素之外的每个嵌套元素。我试过寻找第 N 个 child 并使用“>”运算符。我尝试按类名、名称、Xpath、链接名、部分链接名搜索,但没有任何效果。
我在其他地方阅读过检查弹出元素的这个问题,建议有效地编写一个 HTML 解析器或其他东西来复制整个 html 代码,然后从你的副本中选择它。我不会为这个元素这样做。除非出于某种原因我绝对必须这样做,否则这完全是太多的工作。
老实说,此时我什至不在乎了,我只是希望有人直接告诉我要输入什么,这样我才能完成这个元素。这是我设法得到的屏幕截图。我正在寻找以蓝色突出显示的元素。
由于我的代码被要求在此处进行说明
from selenium import webdriver
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary
from selenium.webdriver.common.action_chains import ActionChains
binary = FirefoxBinary('C:\Program Files (x86)\Mozilla Firefox\Firefox.exe')
browser = webdriver.Firefox(firefox_binary=binary)
Deviant = browser.get("http://www.deviantart.com/random/deviant")
GiveMenu = browser.find_element_by_css_selector(".i47")
GiveMenu.click()
#GiveLlama = browser.find_element_by_css_selector("")`
除了最后一行之外的所有内容都有效,这就是最后一行被注释掉的原因,直到我弄清楚要放在那里的内容。无论我尝试了什么,包括到目前为止回答这个问题的人提供的例子,我要么得到一个没有这样的元素的错误,要么得到一个非法的语法错误。
最佳答案
您可以使用 xpath 选择器,在 chrome 中您可以使用右键单击并单击复制 > 复制 Xpath,或者在检查器中选择的元素是“div.popup2 .blockmenu a.f.givellama”
关于python - 在 Python 3 中为 Selenium 的弹出菜单项查找 CSS 选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41436131/