【问题标题】:WebdriverIO can't find any elements on new page after click单击后WebdriverIO在新页面上找不到任何元素
【发布时间】:2021-04-21 04:24:07
【问题描述】:

所以我在 WebdriverIO(Visual Studio Code、node.js、javascript 等)中遇到了一个令人沮丧的错误。我有一个脚本,它从一个网站开始,通过一系列 IF/THEN,单击一个按钮将其引导到一个新网站。这工作得很好。但是当我在新网站上时,我的代码都不起作用,因为我的选择器都找不到元素。

但问题是:当我创建另一个直接进入此页面的脚本时,完全相同的代码可以工作。所有元素都可以被找到、与之交互、getText/clicked 一切。

为什么完全相同的代码只在直接打开页面时有效,而不是在从前一页的按钮单击打开时有效。

    console.log('INTERMEDIARY PAGE')
    browser.pause(2000)
    let Title = $("(//h1[contains(@class,'cs-entry__title')])")
    console.log(Title)
    let ProductButton = $("(//*[contains(@class,'button')])[1]")
    ProductButton.click()

“错误:无法使用选择器“(​​//*[contains(@class,'button')])[1]”调用单击元素,因为找不到元素”

更新: 在新页面上,我做了一个 console.log(browser.getUrl()),它显示了 URL 1 的 URL。我在 URL 2 上!我眼前看到的不是爬虫看到的。这是一种机器人保护形式吗?

【问题讨论】:

    标签: webdriver-io


    【解决方案1】:

    好的,我仍然不知道是什么原因造成的,但我确实找到了解决方法。与其单击链接(DIV 标记),不如对其执行 getAttribute('href')。然后自己打开。

    <a href="LINK" rel="noopener noreferrer" target="_blank" role="link" class="css-4rbku5 css-18t94o4 css-1dbjc4n r-1loqt21 r-18u37iz r-16y2uox r-1wtj0ep r-1ny4l3l r-o7ynqc r-6416eg">
    
        let button = $("(//a[contains(@class,'css-4rbku5 css-18t94o4 css-1dbjc4n r-1loqt21 r-18u37iz r-16y2uox r-1wtj0ep r-1ny4l3l r-o7ynqc r-6416eg')])[2]")
        let attribute = button.getAttribute('href')
        console.log(attribute) --> prints out LINK
        browser.url(attribute)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-09-26
      • 1970-01-01
      • 2019-05-11
      • 2021-10-17
      • 1970-01-01
      • 1970-01-01
      • 2019-01-17
      相关资源
      最近更新 更多