如何使用Selenium点击某个网站上的元素?

问题描述 投票:0回答:1

下面我描述我需要帮助的问题。

描述 我从 https://www.di.se/bors/large-cap/ 收集股票数据,要获取所有必要的数据,我需要单击“nyckeltal”选项卡。

问题 问题是,当我单击选项卡“nyckeltal”时,找不到该元素,因此出现异常,并且我没有被定向到“nyckeltal”。这以前有效,但网站上进行了更改,即类名已更改。 我执行以下操作,使用 Selenium 和 Java 使用 xpath 单击选项卡“nyckeltal”:

driver.findElement(By.xpath(//a[contains(@class,'instrument-table-tab-menu'') and contains(@data-target,'2')])).click();

问题 如何使用 Selenium 单击“nyckeltal”选项卡?如上所述,这之前一直有效!

selenium-webdriver
1个回答
0
投票

这是一个当您使用 Selenium 时非常有用的网站:

现在,关于您的问题,正如您的代码所示,您正在寻找具有类 instrument-table-tab-menu@data-target, '2' 的 HTML 元素。 正如我所见,如果页面经常更改,您最好直接查找 button 的文本,并可以添加一些其他参数,例如类名,但是,两者都应该使用 contains 标志。

这里有一个例子:

  • String xpath = "//button[contains(translate(text(), 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'), 'nyckeltal')]";

翻译选项有助于忽略大写字母,在这种情况下,Selenium 将查找带有文本“nyckeltal”的按钮元素

现在,如果您想确保该选项,可以向 Xpath 添加附加信息,例如数据目标属性。

  • String xpath = "//button[contains(translate(text(), 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'), 'nyckeltal') and @data-target='table_2']";
© www.soinside.com 2019 - 2024. All rights reserved.