【问题标题】:selenium random id random xpath and random css selectorselenium 随机 id 随机 xpath 和随机 css 选择器
【发布时间】:2018-04-11 01:47:44
【问题描述】:

嗨,我是使用 python 的 selenium 初学者.. 问题是 id、xpath 和 css 选择器包含随机 id.. 我无法解决这个问题,因为每次我跳转到页面时都是随机 id 我已经尝试使用 xpath、id、css 选择器甚至类名,但没有用。希望任何人都可以帮助我,并为糟糕的语法感到抱歉

<div role="option" id="listitem1innerListBoxjqxWidgetac7737dcf714" class="jqx-listitem-element" style="height: 24px; top: 25px; left: 0px;" aria-selected="true"><span style="white-space: pre; display: block; visibility: inherit; width: 193px;" class="jqx-listitem-state-normal jqx-listitem-state-normal-default jqx-item jqx-item-default jqx-rc-all jqx-rc-all-default jqx-listitem-state-selected jqx-listitem-state-selected-default jqx-fill-state-pressed jqx-fill-state-pressed-default">0900</span></div>
<span style="white-space: pre; display: block; visibility: inherit; width: 193px;" class="jqx-listitem-state-normal jqx-listitem-state-normal-default jqx-item jqx-item-default jqx-rc-all jqx-rc-all-default jqx-listitem-state-selected jqx-listitem-state-selected-default jqx-fill-state-pressed jqx-fill-state-pressed-default">0900</span>

//*[@id="listitem1innerListBoxjqxWidgetac7737dcf714"]/span   <----Xpath
#listitem1innerListBoxjqxWidgetac7737dcf714 > span          <---css selector

每次我访问该页面时都有随机 id。希望任何人都可以解决我的问题tq

【问题讨论】:

  • 请详细说明您的尝试
  • hour_click = context.browser.find_element_by_xpath("//*[@id='listitem1innerListBoxjqxWidgetac7737dcf714']/span") hour_click.click() time.sleep(3)
  • hour_click = context.browser.find_element_by_id("listitem1innerListBoxjqxWidgetac7737dcf714") hour_click.click() time.sleep(3)
  • 每次运行时 div 元素的类属性是否相同(并且足够独特)?如果是这样,请修改 xpath 以使用 class 属性而不是 @class="jqx-listitem-element"。

标签: python selenium selenium-webdriver selenium-chromedriver


【解决方案1】:

根据您提供的 HTML 和您的代码试用来定位您可以使用任一定位器策略的元素:

  • css_selector

    context.browser.find_element_by_css_selector("div.jqx-listitem-element[id^='listitem1innerListBox'] > span")
    
  • xpath

    context.browser.find_element_by_xpath("//div[@class='jqx-listitem-element' and starts-with(@id,'listitem1innerListBox')]/span")
    

【讨论】:

  • 谢谢先生帮助我,现在我可以弄清楚元素是否有随机id
【解决方案2】:

您可以使用部分 id listitem1innerListBox

context.browser.find_element_by_xpath("//*[contains(@id, 'listitem1innerListBox')]/span") 

context.browser.find_element_by_css_selector("[id*='listitem1innerListBox'] > span")

【讨论】:

    猜你喜欢
    • 2022-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多