我正在尝试使用Python中的Selenium单击特定按钮,但是在识别该特定按钮时遇到问题。例如,如果我在this的google页面上,并且我想让翻译栏下拉,我将如何引用该特定元素。在我的浏览器中检查它,我看到我认为它的数据是:
<div style="clear: both;" aria-controls="uid_0" aria-expanded="false"
class="_LJ _qxg xpdarr _WGh vk_arc" data-fbevent="fastbutton" jsaction="kx.t;
fastbutton: kx.t" role="button" tabindex="0" data-ved="0ahUKEwiwn-6K17XLAhVLWD4KHTk9CTkQmDMILzAA">
但是,从这一点来说,我不确定如何通过函数使用find元素来引用我需要的内容才能正确调用它。
driver.find_element_by_*("?").click()
import unittest
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
#comment
print ("Let's talk about Python.")
driver = webdriver.Firefox()
driver.get("http://www.google.com")
assert "Google" in driver.title
elem = driver.find_element_by_name("q")
elem.send_keys("ignominious")
elem.send_keys(Keys.RETURN)
driver.find_element_by_*("?").click()
assert "No results found." not in driver.page_source
driver.close()
答案 0 :(得分:1)
您可以将css_selector
与class属性
driver.find_element_by_css_selector("._LJ._qxg.xpdarr._WGh.vk_arc").click()
或class_name
与任何一个类
driver.find_element_by_class_name("_LJ").click()
# or
driver.find_element_by_class_name("_qxg").click()
# or
driver.find_element_by_class_name("xpdarr").click()
# or
driver.find_element_by_class_name("_WGh").click()
# or
driver.find_element_by_class_name("vk_arc").click()
发送对元素子项的单击也可以
driver.find_element_by_class_name("vk_ard").click()
答案 1 :(得分:1)
为了更好的可维护性,您应该尝试使用ID。
使用您的示例选择器将是:
driver.find_element_by_css_selector("#uid_1 > div[role='button']").click()
答案 2 :(得分:1)
您要点击箭头吗? 如果是,那么下面的代码对我有用: -
driver.manage().timeouts().implicitlyWait(50, TimeUnit.SECONDS);
driver.get("https://www.google.com/");
driver.findElement(By.name("q")).sendKeys("ignominious");
driver.findElement(By.name("q")).sendKeys(Keys.RETURN);
driver.findElement(By.className("vk_ard")).click();
希望它会对你有所帮助:)。