Python中的硒。尝试选择elemen

2024-04-19 06:16:41 发布

您现在位置:Python中文网/ 问答频道 /正文

更新:我在原来的帖子中发现了问题的原因,但不知道如何解决。这是我的一些代码。我首先做了一个搜索,之后我在firefox中的页面跳转到www.flickr.com/searc/?text=截击。 但显然我的浏览器对象仍然存在www.flickr.com。如何更新?你知道吗

from selenium import webdriver
browser = webdriver.Firefox()
browser.get('https://www.flickr.com')
s = browser.find_element_by_id('search-field')
s.send_keys('volleyball')
s.submit()
s = browser.find_element_by_class_name("style-button")
#s = browser.find_element_by_xpath("//li[@data-style-value = 'minimalism']")
s.click()

原职务:

我正在试验硒,我想选择以下元素:

<li class="style-button minimalist" data-style-value="minimalism" data-tooltip-title="Minimalist" tabindex="0" role="button" aria-label="Minimalist">

我试过以下方法,但都不管用:

s = browser.find_element_by_class_name("style-button minimalist")

s = browser.find_element_by_class_name("style-button.minimalist")

s = browser.find_element_by_css_selector("li.style-button.minimalist")

s = browser.find_element_by_css_selector(".style-button.minimalist")

如何选择此元素?你知道吗


Tags: namebrowsercomdatabystylewwwbutton
1条回答
网友
1楼 · 发布于 2024-04-19 06:16:41

最好的选择是使用绝对xpath。该按钮的功能如下:

/html[1]/body[1]/div[1]/div[1]/div[3]/div[1]/div[1]/div[1]/div[2]/ul[1]/li[3]

此外,我发现有时页面没有加载,selenium会搜索元素,这会导致错误。您可以等待元素出现。您可以找到更多信息here。你知道吗

结合这些,您的代码将是:

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


browser = webdriver.Firefox()
browser.get('https://www.flickr.com/')
s = browser.find_element_by_id('search-field')
s.send_keys('volleyball')
s.submit()

s = WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.XPATH, "/html[1]/body[1]/div[1]/div[1]/div[3]/div[1]/div[1]/div[1]/div[2]/ul[1]/li[3]")))
s.click()
网友
2楼 · 发布于 2024-04-19 06:16:41

您可以在此处尝试XPath:

s = browser.find_element_by_xpath("//li[contains(@class, 'style-button')]")

希望这有点帮助。你知道吗

网友
3楼 · 发布于 2024-04-19 06:16:41

解决了。在s.submit()之后添加browser.refresh()

相关问题 更多 >