我想点击谷歌"新闻"按钮(在搜索了一些东西之后).我想使用文本News(在我的例子中是"Nozzie")作为元素进行搜索.Google有时会更改元素的名称,所以我想使用"News"元素,因为它总是相同的

我用了这个,但它不起作用:

WebDriverWait (driver, 20) .until (EC.element_to_be_clickable ((By.CSS_SELECTOR, "div [aria-label = 'News']"))). Click ()

我能做些什么?

enter image description here

enter image description here

推荐答案

很抱歉耽误了您的时间.

在正确理解您之后,您想要根据元素的文本搜索元素并单击它.

根据记录,您使用WebDriverWait (driver, 20) .until (EC.element_to_be_clickable,虽然这是一个很好的练习您需要了解,如果它是您的第一次点击,那么驱动程序不会点击,直到所有元素都可见,因此driver.find_element().click()做同样的工作

还有一个快速声明,并不是所有的Google搜索都会在选项栏中显示"新闻"按钮,以下是您想要的示例代码.

from time import sleep
from seleniumwire import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.get('https://www.google.com/search?q=weather')
newsButton = driver.find_element(By.LINK_TEXT, 'News')
newsButton.click()
sleep(5) 

您可以根据By.LINK_TEXT的文本来查找元素

这就是你的代码:

WebDriverWait (driver, 20) .until (EC.element_to_be_clickable ((By.LINK_TEXT, "News"))). Click ()

还可以 checkout By.PARTIAL_LINK_TEXT美元

祝你好运,再次为误会道歉,祝你编码愉快:)

update

似乎By.LINK_NAME过滤器只通过链接的文本或<a>标签中的元素来查找元素,这就是为什么它不能捕捉"工具"按钮,但工具按钮是静态的,因此你可以用普通的css selectorxpath来访问它

Python相关问答推荐

如何计算两极打印机中 * 所有列 * 的出现次数?

使用新的类型语法正确注释ParamSecdecorator (3.12)

可变参数数量的重载类型(args或kwargs)

在Pandas DataFrame操作中用链接替换'方法的更有效方法

加速Python循环

python中的解释会在后台调用函数吗?

如果初始groupby找不到满足掩码条件的第一行,我如何更改groupby列,以找到它?

重置PD帧中的值

人口全部乱序 - Python—Matplotlib—映射

Cython无法识别Numpy类型

Pandas—堆栈多索引头,但不包括第一列

Pandas—MultiIndex Resample—我不想丢失其他索引的信息´

以异步方式填充Pandas 数据帧

我对这个简单的异步者的例子有什么错误的理解吗?

python的文件. truncate()意外地没有截断'

根据过滤后的牛郎星图表中的数据计算新系列

时间戳上的SOAP头签名无效

具有不同坐标的tkinter canvs.cocords()和canvs.moveto()

了解如何让库认识到我具有所需的依赖项

在Django REST框架中定义的URL获得404分