【问题标题】:I need help finding an element with a locator我需要帮助查找带有定位器的元素
【发布时间】:2019-09-15 11:57:27
【问题描述】:

我正在尝试从这个 xpath 获取元素,这里是代码,其中有几个元素我删减了代码以避免这里有一百万行。

html

<keyword-text class="_nghost-fyp-81"><div class="keyword-text _ngcontent- 
fyp-81" clickabletooltiptarget="" aria-label=""><span class="keyword 
_ngcontent-fyp-81" aria-hidden="false">new york new york las vegas</span> 
<!----></div><!----><!----></keyword-text>

xpath

keyword_text = self.browser.find_elements_by_xpath("//span[starts-with(@class, 'keyword')]")

错误

<selenium.webdriver.remote.webelement.WebElement (session="941dc1eba2f3f61bb47aa2050889d299", element="0f74389d-13b7-42e8-ba81-429388d6647c")>
<selenium.webdriver.remote.webelement.WebElement (session="941dc1eba2f3f61bb47aa2050889d299", element="edc98646-f4e3-4ec9-8307-c12c110a219a")>
<selenium.webdriver.remote.webelement.WebElement (session="941dc1eba2f3f61bb47aa2050889d299", element="a6e12a98-22f4-4b1b-aad1-4831dcdb00a0")>
<selenium.webdriver.remote.webelement.WebElement (session="941dc1eba2f3f61bb47aa2050889d299", element="89f50425-8d53-4292-8e33-2a268f62c8b1")>
<selenium.webdriver.remote.webelement.WebElement (session="941dc1eba2f3f61bb47aa2050889d299", element="d7af6e64-6aa9-4fd0-9f9e-034f56d69c0d")>
<selenium.webdriver.remote.webelement.WebElement (session="941dc1eba2f3f61bb47aa2050889d299", element="1566c190-3809-4c40-b0c7-1051502bc658")>
<selenium.webdriver.remote.webelement.WebElement (session="941dc1eba2f3f61bb47aa2050889d299", element="f8304581-fba4-42c9-8332-8fbe5f05daf7")>
<selenium.webdriver.remote.webelement.WebElement (session="941dc1eba2f3f61bb47aa2050889d299", element="b6d79b66-874e-4233-9100-af4242a34c1b")>
<selenium.webdriver.remote.webelement.WebElement (session="941dc1eba2f3f61bb47aa2050889d299", element="a21f9c54-0dbf-4e4c-8055-f007c1b26c80")>
<selenium.webdriver.remote.webelement.WebElement (session="941dc1eba2f3f61bb47aa2050889d299", element="1e3dcbd6-a2de-4335-8688-f5dd5391d5dd")>
<selenium.webdriver.remote.webelement.WebElement (session="941dc1eba2f3f61bb47aa2050889d299", element="61bff097-3394-4b90-93e7-c5aeb199321b")>
<selenium.webdriver.remote.webelement.WebElement (session="941dc1eba2f3f61bb47aa2050889d299", element="ddc2fe2b-1d50-4e6c-909f-3f47c704a36d")>
<selenium.webdriver.remote.webelement.WebElement (session="941dc1eba2f3f61bb47aa2050889d299", element="0061e31c-3607-43c3-a984-c28130771119")>

【问题讨论】:

  • 显示您的代码看起来像是在打印某种对象

标签: python selenium xpath css-selectors webdriverwait


【解决方案1】:

以下控制台消息...

<selenium.webdriver.remote.webelement.WebElement (session="941dc1eba2f3f61bb47aa2050889d299", element="0f74389d-13b7-42e8-ba81-429388d6647c")>
<selenium.webdriver.remote.webelement.WebElement (session="941dc1eba2f3f61bb47aa2050889d299", element="edc98646-f4e3-4ec9-8307-c12c110a219a")>
<selenium.webdriver.remote.webelement.WebElement (session="941dc1eba2f3f61bb47aa2050889d299", element="a6e12a98-22f4-4b1b-aad1-4831dcdb00a0")>

...不是任何错误。

当您使用 find_elements* 时,生成的 keyword_textWebElements 类型的对象列表,当您打印它们时,这些对象被打印出来。

打印文本,例如new york new york las vegas从这些元素中你必须为visibility_of_all_elements_located()诱导WebDriverWait,你可以使用以下Locator Strategies之一:

  • 使用CSS_SELECTOR

    print([my_elem.text for my_elem in WebDriverWait(driver, 10).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, "keyword-text>div.keyword-text>span.keyword")))])
    
  • 使用XPATH

    print([my_elem.text for my_elem in WebDriverWait(driver, 10).until(EC.visibility_of_all_elements_located((By.XPATH, "//keyword-text/div[contains(@class, 'keyword-text')]/span[contains(@class, 'keyword')]")))])
    
  • 注意:您必须添加以下导入:

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

【讨论】:

  • keyword_text = self.browser.find_elements_by_xpath("//span[starts-with(@class, 'keyword')]") for keyw in keyword_text: print(keyw) 我就是这样打印出来的
  • @user2217947 查看更新的答案并让我知道状态。
  • 哦,是的,这是来自远程 webdriver 的代码,我将不得不阅读更多内容。
  • @user2217947 随时根据您的新要求提出新问题。 StackOverflow 贡献者将很乐意为您提供帮助。
  • 现在我觉得很傻,我能够通过添加 .text 让原始代码工作哈哈,你的代码提醒了我@user2217947
猜你喜欢
  • 1970-01-01
  • 2022-12-09
  • 1970-01-01
  • 1970-01-01
  • 2019-12-29
  • 2020-07-10
  • 1970-01-01
  • 1970-01-01
  • 2023-03-24
相关资源
最近更新 更多